package com.carkeeper.menu.service;

import com.carkeeper.pojo.Menu;
import com.github.pagehelper.Page;

import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;

public interface MenuService {

    /**
     * 新增菜单
     * @param menu
     * @return
     */
    int addMenu(Menu menu);

    /**
     * 通过id删除菜单
     * @param id
     * @return
     */
    int deleteById(Integer id);

    /**
     * 更新菜单
     * @param menu
     * @return
     */
    int updateMenu(Menu menu);

    /**
     * 根据菜单id查询id
     * @param id
     * @return
     */
    Menu findById(Integer id);

    /**
     * 根据父菜单id查询子菜单
     * @param menuId
     * @return
     */
    List<Menu> findChildByParentRoleId(Integer menuId);

    /**
     * 查询所有
     * @return
     */
    List<Menu> findAll();

    /**
     * 条件查询
     * @param searchMap
     * @param page
     * @param size
     * @return
     */
    Page<Menu> queryPageByExample(Map<String, Object> searchMap, int page, int size);




    /**
     * 根据角色id查询菜单列表
     * @param roleId
     * @return
     */
    LinkedHashSet<Menu> findMenuListByRoleId(Integer roleId);

    /**
     * 根据角色id和菜单id新增角色对应的菜单列表
     * @param roleId
     * @param menuId
     * @return
     */
    int addMenuListByRoleIdAndMenuId(Integer roleId, Integer menuId);

    /**
     * 根据roleId删除中间表相关数据
     * @param roleId
     * @return
     */
    int deleteMenuListByRoleId(Integer roleId);
}
